package net.sf.fmj.ejmf.toolkit.gui.controls;

/** 
 * ProgressBar provides a generalized interface for a component
 * used to display the progression of time. 
 * <p>
 * NOTE: This interface will make it easy to slide JSlider into 
 * StandardControlPanel if performance ever improves to a 
 * point where it could run with a controller without causing
 * stutter.
 */

import javax.swing.event.ChangeListener;

public interface ProgressBar {
	/**
	 * Get current value of ProgressBar.
	 * 
	 * @return value of Slider
	 */
	public int getValue();

	/**
	 * Set current value of ProgressBar.
	 * 
	 * @param value
	 *            new value of Slider
	 */
	public void setValue(int value);

	/**
	 * Get minimum legal value of ProgressBar.
	 * 
	 * @return minimum legal Slider value
	 */
	public int getMinimum();

	/**
	 * Set legal minimum value of ProgressBar.
	 * 
	 * @param value
	 *            legal minimum value of Slider
	 */
	public void setMinimum(int value);

	/**
	 * Get maximum legal value of ProgressBar.
	 * 
	 * @return maximum legal Slider value
	 */
	public int getMaximum();

	/**
	 * Set maximum legal value of ProgressBar.
	 * 
	 * @param value
	 *            maximum legal value of Slider
	 */
	public void setMaximum(int value);

	/**
	 * Register ChangeListener with ProgressBar
	 */
	public void addChangeListener(ChangeListener l);

	/**
	 * Remove object as ProgressBar ChangeListener
	 */
	public void removeChangeListener(ChangeListener l);
}
